package com.hdc.sell.controller;

import com.hdc.sell.Service.CategoryService;
import com.hdc.sell.Service.ProductService;
import com.hdc.sell.dataobject.ProductCategory;
import com.hdc.sell.dataobject.ProductInfo;
import com.hdc.sell.utils.ResultVOUtil;
import com.hdc.sell.vo.ProductInfoVo;
import com.hdc.sell.vo.ProductVO;
import com.hdc.sell.vo.ResultVO;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;

/**
 * @author 郭丽然
 * @program: sell
 * @date 2020/4/22 10:49
 * 功能：
 */
@RestController
@RequestMapping("/buyer/product")
public class BuyerProductController {
    @Autowired
    private ProductService productService;
    @Autowired
    private CategoryService categoryService;

    @GetMapping("/list")
    public ResultVO list() {
        //1获取所有上架商品
        List<ProductInfo> productInfoList =productService.findUpAll();
        //2获取所有上架商品的类目编号
        List<Integer> categoryTypelist= new ArrayList<>();
        for (ProductInfo productInfo:productInfoList){
            categoryTypelist.add(productInfo.getCategoryType());
        }
        //3获取所有的商品类目
        List<ProductCategory> productCategoryList=categoryService.findByCategoryTypeIn(categoryTypelist);
        //4遍历商品类目列表
        List<ProductVO> productVOList=new ArrayList<>();
        for(ProductCategory productCategory:productCategoryList){
            //5创建一个productVo对象
            ProductVO productVO=new ProductVO();
            productVO.setCategoryType(productCategory.getCategoryType());
            productVO.setCategoryName(productCategory.getCategoryName());
            //productVo.foods:
            List<ProductInfoVo> productInfoVoList=new ArrayList<>();
            for (ProductInfo productInfo:productInfoList){
                if (productInfo.getCategoryType().equals(productCategory.getCategoryType())){
                    ProductInfoVo productInfoVo=new ProductInfoVo();
                    BeanUtils.copyProperties(productInfo,productInfoVo);
                    productInfoVoList.add(productInfoVo);
                }
            }
            productVO.setProductInfoVoList(productInfoVoList);
            productVOList.add(productVO);
        }

    //创建resultVO视图对象
        return  ResultVOUtil.success(productVOList);
    }
}
